package com.ozo.boot.gen.util.sql;

import java.util.List;

public class OracleCreateTableUtil {

    /**
     * 拼接建表语句
     *
     * @param tableName 表名
     * @param columns   字段信息列表，每个元素是一个包含字段名、字段类型、是否允许为空的字符串数组
     * @return 拼接好的建表SQL语句
     */
    public static String createTableStatement(String tableName, List<String[]> columns) {
        StringBuilder sb = new StringBuilder();
        sb.append("CREATE TABLE ").append(tableName).append(" (\n");

        for (String[] column : columns) {
            String columnName = column[0];
            String columnType = column[1];
            String isNull = column[2];

            sb.append("    ").append(columnName).append(" ").append(columnType);
            if ("N".equals(isNull)) {
                sb.append(" NOT NULL");
            }
            sb.append(",\n");
        }

        // 移除最后一个逗号和换行符
        if (columns.size() > 0) {
            sb.setLength(sb.length() - 2);
        }

        sb.append("\n)");
        return sb.toString();
    }

    /**
     * 示例方法，展示如何使用createTableStatement方法
     */
    public static void main(String[] args) {
        List<String[]> columns = List.of(
            new String[]{"ID", "NUMBER(16)", "N"},
            new String[]{"NAME", "VARCHAR2(50)", "Y"},
            new String[]{"AGE", "NUMBER(3)", "Y"}
        );

        String sql = createTableStatement("EMPLOYEE", columns);
        System.out.println(sql);
    }
}